package com.t.bricks.bussiness.db.mapper.votestatistics;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.t.bricks.bussiness.db.entity.votestatistics.VoteStatistics;
import com.t.bricks.bussiness.model.votestatistics.ConditionVoteStatistics;
import com.t.bricks.model.OrderInfo;
import com.t.bricks.model.Page;

@Mapper
public interface VoteStatisticsMapper {
    
	/**
	 * 查询分页信息
	 * @param page 分页信息对象
	 * @param orders 排序数据集合
	 * @param sLikeStr 全文检索
	 * @param dLikeDateSt 检索的开始时间范围
	 * @param dLikeDateEd 检索的结束时间范围
	 * @param condition 查询条件对象
	 * @return List<VoteStatistics>
	 */
	List<VoteStatistics> findByPage(
		@Param("page") Page page,
		@Param("orders") List<OrderInfo> orders,
		@Param("sLikeStr") String sLikeStr,
		@Param("dLikeDateSt") Date dLikeDateSt,
		@Param("dLikeDateEd") Date dLikeDateEd,
		@Param("condition") ConditionVoteStatistics condition
	);
    
	/**
	 * 查询分页总数
	 * @param sLikeStr 全文检索
	 * @param dLikeDateSt 检索的开始时间范围
	 * @param dLikeDateEd 检索的结束时间范围
	 * @param condition 查询条件对象
	 * @return int
	 */
	int findByPageCount(
		@Param("sLikeStr") String sLikeStr,
		@Param("dLikeDateSt") Date dLikeDateSt,
		@Param("dLikeDateEd") Date dLikeDateEd,
		@Param("condition") ConditionVoteStatistics condition
	);

	/**
	 * 根据记录编号查询符合分页数据的某条记录
	 * @Param sId
	 * @return VoteStatistics
	 */
	VoteStatistics findByPageRow(@Param("sId") String sId);

	/**
	 * 查询搜索用的数据
	 * @param whereStr 查询条件字符串
	 * @param orders 排序数据集合
	 * @return List<VoteStatistics>
	 */
	List<VoteStatistics> findBySearch(
		@Param("whereStr") String whereStr,
		@Param("orders") List<OrderInfo> orders
	);

	/**
	 * 投票
	 * @param sVoteRecordId
	 * @param sUserIds
	 * @param sTotalPoll
	 * @param sTotalOptions
	 * @return
	 */
	int vote(
		@Param("sVoteRecordId") String sVoteRecordId,
		@Param("sUserIds") String sUserIds,
		@Param("sTotalPoll") String sTotalPoll,
		@Param("sTotalOptions") String sTotalOptions
	);
	
	/**
	 * 查找当前投票数据信息
	 * @param sId
	 * @return
	 */
	VoteStatistics findVoteData(@Param("sId") String sId);
	
}
